/*
 * Camera.h
 *
 *  Created on: 31/05/2014
 *      Author: javier
 */

#ifndef CAMERA_H_
#define CAMERA_H_

#include <utility>
#include "Properties.h"
#include "Positionable.h"
#include "ViewCoordinatesConverter.h"
#include <SDL2/SDL.h>

/*
 * Calcula los offsets de dibujado, tomando una posicion en el model, y
 * tranasformandola a coordenadas de vista (pixeles en pantalla) mas un
 * desplazamiento debido a la posicion del jugador.
 */
class Camera {
public:
	Camera();
	SDL_Rect getOffsetFromModel(std::pair<double, double>& position);
	void setTarget(Positionable* p);
	void update();
	virtual ~Camera();
	void setLevelHeightTiles(int levelHeight);
	void setLevelWidthTiles(int levelWidth);

private:
	int screenWidth, screenHeight, levelWidth, levelHeight;
	Properties properties;
	ViewCoordinatesConverter conv;
	std::pair<int, int> offset;
	Positionable* target;
};

#endif /* CAMERA_H_ */
